﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Weazel.Willows.InterfaceGeneration
{
	public class OpbIpifv301aLibraryFiles
		: Weazel.Badger.Xilinx.IseProject.LibraryFileCollection
	{
		string[] fileList = 
			{
				"reset_mir.vhd",
				"brst_addr_cntr.vhd",
				"opb_flex_addr_cntr.vhd",
				"brst_addr_cntr_reg.vhd",
				"opb_be_gen.vhd",
				"srl_fifo3.vhd",
				"write_buffer.vhd",
				"opb_bam.vhd",
				"opb_ipif.vhd"
			};

		public OpbIpifv301aLibraryFiles(string baseDirectory)
		{
			this.LibraryName = "opb_ipif_v3_01_a";
			this.Directory = baseDirectory + @"\opb_ipif_v3_01_a\hdl\vhdl\";
			this.Files = new List<string>(fileList);
		}
	}

	public class Rdpfifov101bLibraryFiles
		: Weazel.Badger.Xilinx.IseProject.LibraryFileCollection
	{
		string[] fileList = 
			{
				"ipif_control_rd.vhd",
				"rdpfifo_dp_cntl.vhd",
				"rdpfifo_top.vhd"
			};

		public Rdpfifov101bLibraryFiles(string baseDirectory)
		{
			this.LibraryName = "rdpfifo_v1_01_b";
			this.Directory = baseDirectory + @"\rdpfifo_v1_01_b\hdl\vhdl\";
			this.Files = new List<string>(fileList);
		}
	}

	public class WrpFifov101bLibraryFiles
		: Weazel.Badger.Xilinx.IseProject.LibraryFileCollection
	{
				string[] fileList = 
			{
				"pf_dly1_mux.vhd",
				"ipif_control_wr.vhd",
				"wrpfifo_dp_cntl.vhd",
				"wrpfifo_top.vhd"
			};

		public WrpFifov101bLibraryFiles(string baseDirectory)
		{
			this.LibraryName = "wrpfifo_v1_01_b";
			this.Directory = baseDirectory + @"\wrpfifo_v1_01_b\hdl\vhdl\";
			this.Files = new List<string>(fileList);
		}
	}

	public class InterruptControl100aLibraryFiles
		: Weazel.Badger.Xilinx.IseProject.LibraryFileCollection
	{
		string[] fileList = 
			{
				"interrupt_control.vhd"
			};

		public InterruptControl100aLibraryFiles(string baseDirectory)
		{
			this.LibraryName = "interrupt_control_v1_00_a";
			this.Directory = baseDirectory + @"\interrupt_control_v1_00_a\hdl\vhdl\";
			this.Files = new List<string>(fileList);
		}
	}

	public class ProcCommonV200aLibraryFiles
		: Weazel.Badger.Xilinx.IseProject.LibraryFileCollection
	{
		// SUBLIB proc_common_v2_00_a VhdlLibrary vhdl
		string[] fileList = 
			{
				"proc_common_pkg.vhd",
				"family.vhd",
				"or_muxcy.vhd",
				"or_gate.vhd",
				"counter_bit.vhd",
				"counter.vhd",
				"inferred_lut4.vhd",
				"srl_fifo2.vhd",
				"pf_counter_bit.vhd",
				"pf_counter.vhd",
				"pf_counter_top.vhd",
				"pf_occ_counter.vhd",
				"pf_occ_counter_top.vhd",
				"pf_adder_bit.vhd",
				"pf_adder.vhd",
				"pf_dpram_select.vhd", 
				"srl16_fifo.vhd", 
				"pselect.vhd", 
				"valid_be.vhd", 
				"ld_arith_reg.vhd", 
				"mux_onehot.vhd", 
				"down_counter.vhd", 
				"ipif_pkg.vhd", 
				"ipif_steer.vhd",
				"direct_path_cntr_ai.vhd"
			};

		public ProcCommonV200aLibraryFiles(string baseDirectory)		
		{
			this.LibraryName = "proc_common_v2_00_a";
			this.Directory = baseDirectory + @"\proc_common_v2_00_a\hdl\\vhdl\";
			this.Files = new List<string>(fileList);
		}
	}	
}
